AWS再入門2020 AWS Control Tower編
こんにちは、コンサル部の鈴木(純)です。
世はマルチアカウント時代!というくらいにはAWSでもマルチアカウント運用しているところが多くなってきていると日々感じています。そんなマルチアカウント管理が必要となっている中、東京リージョンにきていないためかControl Towerの情報があまりないんですよね。
ないなら自分でまとめてみようということで、今回はControl Towerに勝手に再入門していきます。本記事ではControl Towerってどんなサービスなの?という点を、浅く広く勉強していけるように書いていきます。
Control Towerを学ぶ前提ですが、非常に多くのサービスが関連しているためになかなか理解するのが難しいサービスです。OrganizationやService Catalog、Config、SSOなどなどたくさんのサービスが出てきます。各サービスの詳細は言及しないので、都度調べながら学習していただければ。(正直自分もよくわかってない)
Control Towerとは?
簡単に言うと、AWSのベストプラクティスに基づいてマルチアカウント環境のセットアップや管理ができる仕組みを提供するサービスです。
大規模な組織となると多数のアプリケーションを様々なチームがAWS上で構築を行うことがあると思います。
そこで課題となってくるのが、多数のアカウントのセキュリティやコンプライアンスをある一定以上に保ちたいという要望です。
これまでは上記の要望を叶えるためOrganizationsやService Catalog、Configといったものを上手に活用することで実現可能ではありましたが、どういったルールを設定するべきか、どのような仕組みで運用するべきかなど多くの課題がありました。
そこで登場したのが、Landing Zone という概念です。Control Towerを学ぶ上では切っても切り離せないものなので、まずはこちらを理解していきましょう。
まずはLanding Zoneを知る
Landing Zone は、AWS のベストプラクティスに基づいて構成したアカウントを、スケーラブルに展開していくための仕組みの総称です。これにより、ガバナンスを効かせた形でアカウントを自動展開することができます。
ここで大事なのはあくまでLanding Zoneは仕組みのことを指す言葉であり、AWSのサービスではないことに注意しましょう。
Landing Zoneは以下の機能から構成されます。
参考:AWS Control Towerを活用したランディングゾーンの活用
- アカウントの発行・必要な初期設定の済んだアカウントを作成
- 管理用権限の発行・対象アカウントを管理するための権限を作成
- 共有サービスへのアクセス (ユーザー環境に合わせて個別に実装する)・AD やファイルサーバー等の共有サービスや運用拠点への接続経路の確保
- AWS ログの集約・監査用ログをセキュアに一元保存
- ガードレールの設置
参考:AWS マルチアカウント管理を実現するベストプラクティスとは ?
これらを実装することによってマルチアカウントの運用をセキュアに展開していくことが可能となります。
Landing Zoneを実装するには
Landing Zoneを実装する方法には2通り存在します。
Control Towerを利用する
1つ目のControl TowerはLanding Zoneを実現するためのサービスで、Landing Zoneに必要とされる機能を簡単にセットアップすることが可能です。
ただし、ガードレールのカスタマイズができない、対応リージョンが少ない(東京リージョンも未対応)などの制限があります。 既存のOrganizationでも適用できるようになり、アカウントの追加も対応しています。詳細は以下エントリを参考にしてください。
主な機能については後述します。
独自に実装する
もう一つの独自に実装する方法は、Landing Zoneに必要な機能を自ら構築していくという方法です。こちらはOrganizationsやService Catalog、Configなどを使って作成することになるので、Control Towerよりも自由にカスタマイズしやすい反面、構築が難しくスタックの管理など運用も煩雑になるという問題もあります。
独自に実装する場合には、AWSからソリューションとして AWS Landing Zone というものが提供されているので、こちらも検討の余地があります。 また、ガードレールの実装部分ではAWS Config Conformance Packsという非常に便利なものが登場しています。
Conformance Packsを使うことで、Control TowerのConfigで実装されている検出ガードレールをまとめて導入することができます。また、独自に実装することによって自由にカスタマイズできるので、自社の要件に合わせてガードレールを以前より簡単に作ることができるようになりました。
Conformance Packsについては以下のエントリがめちゃめちゃわかりやすいので一読しておきましょう。
実際にControl Towerで適用されている検出ガードレールの設定は以下のgithubで公開されています。
まとめると、Control Towerはちょっと制限はあるけど、Landing Zoneという「マルチアカウント運用におけるベストプラクティス」をいい感じに適用してくれて、管理できるサービスと覚えておきましょう。これまでは独自に実装するしかなかったAWS Landing Zoneのソリューションがサービスになったイメージですね。
AWS Control Towerの機能
それではLanding Zoneをなんとなく理解できたところで、Control Towerの機能についてみていきましょう。
大きく分けて4つの機能があります。
- ダッシュボード
- Landing Zoneの作成
- ガードレール
- アカウントファクトリー
ダッシュボード
プロビジョニングされているアカウントやOU、適用されている予防・検出ガードレール、登録されているOU、ガードレールで非準拠となっているリソースをダッシュボード上で確認することができます。
独自にLanding Zoneを実装する時と比べて特にナイスなのはこのダッシュボードだと思っています。マルチアカウントの運用では、各アカウントの状態を把握することが難しくなりがちですが、このダッシュボードのおかげで視覚的に把握することができるようになっています。
どのリソースがガードレールに準拠していないかを目で確認できたりするので、多くのアカウントを管理するときには独自で構築するより安心感がありますね。
Landing Zoneの作成
先ほどから何度も出ているLanding Zoneです。Control Towerでは具体的には以下のような物をまるっと自動でセットアップすることができます。
参考:AWS マルチアカウント管理を実現するベストプラクティスとは ?
- 新規のAWS Organizations
- 3つのOU(Root、Core、Custom) を作成する
- マスターアカウント配下に2つの追加アカウント
- ログアーカイブアカウントと監査アカウント
- 各種ガードレール
- ポリシーを適用するための予防ガードレール
- 違反を検出するための検出ガードレール
- AWS SSOとそのために利用するディレクトリ及びグループ
ここで設定されるガードレールはマスターアカウントを除き、全てに適用されます。
ちなみに AWS Landing Zone のソリューションとControl Towerで自動作成されるLanding Zone環境は若干構成が異なっていて、まるっきりそのままというわけではないようです。(共有サービスアカウントがなかったり、監査アカウントでGuardDutyがマスターアカウントとして設定されていなかったり…)
この辺はもう少しわかったら整理したいですね。
ガードレール
各アカウントに設定するルールのことです。これによって新しく発行するAWSアカウントのセキュリティやコンプライアンスといった基準を一定に保つことができます。
ガードレールには主に予防ガードレールと検出ガードレールの2種類に分かれます
- 予防ガードレール
- OrganizationsのSCPを使って実装され、ポリシー違反に繋がるアクションを禁止する動作をします。全リージョンでサポートされます。
- 検出ガードレール
- Config RulesとLambdaを使用して実装され、ポリシー違反を検出してダッシュボードを通じてアラートを提供してくれます。検出ガードレールについてはControl Towerがサポートされているリージョンのみに適用されます。
Control Tower は次のリージョンでサポートされています。2020/10/2時点では東京リージョンは未対応のため、検出ガードレールは追加されないことに注意しましょう。 - 米国東部(バージニア北部) - 米国東部 (オハイオ) - 米国西部 (オレゴン) - 欧州 (アイルランド) - アジアパシフィック (シドニー)
また、ガードレールは必須のガードレール、強く推奨されるガードレール、選択的ガードレールと3つに分かれていて、デフォルトでは必須のガードレールのみが有効化されます。
設定されるガードレールの詳細については全てドキュメントで確認することができるので、どんなルールが適用されるのか知りたい方は確認しておきましょう。
参考:ガードレールリファレンス
アカウントファクトリー
アカウントファクトリーはControl Tower内にメンバーアカウントを作成するための機能で、Service Catalogの製品である、Account Factoryを使用してアカウントをプロビジョニングすることができます。この機能を使うことで、新しいアカウントが必要になった時にすぐアカウントを払い出すことが可能になっています。
アカウントファクトリーでアカウントを発行する時には、パブリックサブネット有無やプライベートサブネットの数、VPCを作成するリージョンなどを指定やVPCのCIDRを変更することが可能です。パブリックサブネットを作成する場合は、NATゲートウェイが合わせて作成されます。
アカウント発行時に都度変更できるのはいい感じですね。VPCの作成リージョンがControl Tower対応済のリージョンのみになっているので気をつけましょう。その他設定できる値の詳細については以下をドキュメントを参照してください。
参考:Amazon Virtual Private Cloud 設定で Account Factory を設定する
この機能で作成したアカウントはControl Tower管理下となるので、AWS SSOを使用してアカウントにログインすることができます。
料金
Control Tower自体は料金はかかりません。ただし、セットアップする際にLanding Zoneの作成やガードレールとして設定されるものには料金がかかります。
Control Towerでは裏で数多くのサービスが連携しています。Service Catalog, CloudTrail、Config、CloudWatch、SNS、S3、VPCなどが利用され料金が発生する可能性があるため、以下のページの料金例をよく確認しておきましょう。
特にアカウントファクトリーでアカウントを作る時にNATゲートウェイを作成すると維持コストが結構かかってしまうようです。お試しでコストが気になる人はパブリックサブネットの作成をOFFにしましょう。
実際の構築手順
以下のエントリがセットアップまでわかりやすく解説されているので、是非参考にしてみてください。
特にControl TowerはLanding Zoneの展開に60分以上かかったり、複数のアカウントを自動で作成する関係で手軽に試すにはちょっと面倒なサービスなので、イメージをつけるためにも一読しておくと設定までの流れを把握しやすいと思います。
まとめ
AWS再入門2020 AWS Control Tower編ということで、基本的なControl Towerの位置付けと機能についてご紹介しました。今後さらにマルチアカウント運用が盛んになっていくと思うので、Control Towerのアップデートに注目していきましょう。何よりも東京リージョンへの対応が待ち遠しいですね!